/**
 * 支付工具类
 */

/**
 * 检测当前平台
 * @returns {Object} 平台信息
 */
export const getPlatformInfo = () => {
	let platform = {
		isApp: false,
		isWechat: false,
		isAlipay: false,
		isH5: false,
		platform: 'unknown'
	};
	
	// #ifdef APP-PLUS
	platform.isApp = true;
	platform.platform = 'app';
	// #endif
	
	// #ifdef MP-WEIXIN
	platform.isWechat = true;
	platform.platform = 'miniprogram';
	// #endif
	
	// #ifdef MP-ALIPAY
	platform.isAlipay = true;
	platform.platform = 'alipay';
	// #endif
	
	// #ifdef H5
	platform.isH5 = true;
	platform.platform = 'h5';
	// #endif
	
	return platform;
};

/**
 * 获取可用的支付方式
 * @returns {Array} 支付方式列表
 */
export const getAvailablePaymentMethods = () => {
	const platform = getPlatformInfo();
	const methods = [];
	
	// 微信支付在所有平台都可用
	methods.push({
		type: 'wechat',
		name: '微信支付',
		desc: '推荐使用微信支付',
		icon: 'https://www.shuyunpt.com/app/image/pay/wechat-pay.png',
		available: true
	});
	
	// 支付宝支付仅在APP环境可用
	if (platform.isApp) {
		methods.push({
			type: 'alipay',
			name: '支付宝支付',
			desc: '使用支付宝快捷支付',
			icon: 'https://www.shuyunpt.com/app/image/pay/alipay.png',
			available: true
		});
	}
	
	return methods;
};

/**
 * 获取默认支付方式
 * @returns {string} 默认支付方式
 */
export const getDefaultPaymentMethod = () => {
	const platform = getPlatformInfo();
	
	// 小程序环境默认微信支付
	if (platform.isWechat) {
		return 'wechat';
	}
	
	// APP环境默认微信支付
	if (platform.isApp) {
		return 'wechat';
	}
	
	return 'wechat';
};

/**
 * 验证支付参数
 * @param {Object} payData - 支付数据
 * @param {string} payType - 支付类型
 * @returns {boolean} 是否有效
 */
export const validatePaymentData = (payData, payType) => {
	if (!payData) {
		return false;
	}
	
	if (payType === 'wechat') {
		// 小程序环境需要特定参数
		// #ifdef MP-WEIXIN
		return payData.timeStamp && payData.nonceStr && payData.package && payData.signType && payData.paySign;
		// #endif
		
		// APP环境需要orderInfo
		// #ifdef APP-PLUS
		return payData.orderInfo;
		// #endif
	}
	
	if (payType === 'alipay') {
		// APP环境需要orderInfo
		// #ifdef APP-PLUS
		return payData.orderInfo;
		// #endif
	}
	
	return false;
};

/**
 * 格式化支付金额
 * @param {number|string} amount - 金额
 * @returns {string} 格式化后的金额
 */
export const formatPaymentAmount = (amount) => {
	if (!amount) return '0.00';
	
	const num = parseFloat(amount);
	if (isNaN(num)) return '0.00';
	
	return num.toFixed(2);
};

/**
 * 生成订单号
 * @returns {string} 订单号
 */
export const generateOrderNo = () => {
	const timestamp = Date.now();
	const random = Math.floor(Math.random() * 1000);
	return `ORDER${timestamp}${random}`;
}; 